package com.my.study;

import java.util.ArrayList;
import java.util.List;

/**
 * java.util.* 包下的所有集合，都有fail-fast机制（集合遍历出错机制），
 * 在遍历过程中出错，通过uncheck异常暴力地反馈处理啊
 */
public class FailFastInfo {

    public static void main(String[] args) {

        List<String> masterList = new ArrayList<>();
        masterList.add("one");
        masterList.add("two");
        masterList.add("three");
        masterList.add("four");
        masterList.add("five");

        List<String> branchList = masterList.subList(0,3);

        //下面三行代码，如果不注释掉，则会导致branchList操作出现异常
        /*masterList.remove(0);
        masterList.add("ten");
        masterList.clear();*/

        //下方四行代码能够全部正确执行
        branchList.clear();
        branchList.add("six");
        branchList.add("seven");
        branchList.remove(0);

        //输出 [seven]
        System.out.println(branchList);
        //自列表修改导致主列表也被动修改， 输出[seven, four, five]
        System.out.println(masterList);

    }
}
